export default {
    data() {
        return {
            queryMap: {
                page: 1,
                limit: 10
            },
            //表格数据
            dataList: [],
            //数据总条数
            total: null,
            //弹出框的标题
            formTitle: '',
            //选中的记录
            checkedData: [],
            //表格高度
            height: 530,
            //分页选项
            limits: [10,15,20]
        }
    },
    methods: {
        /**
         * 生成序号
         */
        indexMethod(index) {
            return (this.queryMap.page - 1) * this.queryMap.limit + index + 1;
        },
        /**
         * 分页切换
         */
        handleCurrentChange(val) {
            this.queryMap.page = val
            this.getDataList()

        },
        /**
         * 每页显示条数切换
         * @param val
         */
        handleSizeChange(val) {
            this.queryMap.limit = val
            this.query()
        },
        // 表格隔行变色
        tableRowClassName({ row, rowIndex }) {
            if (rowIndex % 2 === 0) {
                return 'success-row'
            }
        },
        /**
         * 获取表格数据
         */
        getDataList() {
            this.$http.post(this.url.getDataList, this.queryMap).then(res => {
                if (res.data) {
                    this.dataList = res.data.data
                    this.total = res.data.count
                }
            }).catch((res) => {
                console.log(res)
                this.$message.error("无法获取表格信息，服务器错误")
            })
        },
        /**
         * 查询操作
         */
        query() {
            this.queryMap.page = 1
            this.getDataList()
        },
        /**
         * 重置
         */
        resetForm() {
            this.$refs.queryForm.resetFields()
        },
        /**
         * 打开新增弹窗
         */
        openAddDialog(title) {
            this.formTitle = title
            this.$refs.model.openAddDialog()
            this.$refs.model.resetModelForm()
        },
        /**
         * 表格选中项发生变化时，获取当前的选中记录
         */
        selectChange(val) {
            this.checkedData = val
        },
        /**
         * 打开编辑弹窗
         */
        openEditDialog(key) {
            //判断用户是否只勾选了一条数据
            if (this.checkedData.length !== 1) {
                this.$message.warning("请选择一条记录进行编辑")
                return
            }
            //获取选中记录的主键
            let num = this.checkedData[0][key]
            const params = {}
            params[key] = num
            this.$http.get(this.url.getOne, {
                params: params
            }).then(res => {
                this.$refs.model.openEditDialog()
                this.$refs.model.modelForm = res.data
            })
        },
        /**
         * 批量删除
         */
        deleteData(key) {
            if (this.checkedData.length === 0) {
                this.$message.warning("请选择要删除的记录")
                return
            }

            this.$confirm('确认要删除所选记录吗', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(() => {
                //获取选中的记录编号放到数组中
                let nums = []

                for (let i = 0; i < this.checkedData.length; i++) {
                    nums.push(this.checkedData[i][key])
                }

                //调用后台
                this.$http.post(this.url.delBatch, nums).then(res => {
                    if (res.code === '200') {
                        this.$message.success("删除成功")
                        this.getDataList()
                    } else {
                        this.$message.error("删除失败，请联系管理员")
                    }
                })
            }).catch(() => {
                this.$message.info("取消删除")
            })
        }
    },
    created() {
        //获取表格数据信息
        if (!this.isOrderList) {
            this.getDataList()
        }
    }
}